G06-GeometricTransformations.mws

     Transformações Geométricas


Uma introduçaõ as transformações aplicadas a figuras geométricas- incluindo translação, reflexão, rotação, estiramento e recolhimento.

[Direções : Execute primeiramente a seção Code Resource. Embora não haja output imediato, essas definições serão usadas posteriormente nessa worksheet.]

  0. Código

>     restart; with(geometry):

>    #-------COLORS ------------------------
co  := 'color = COLOR(RGB, .9, .5, .1), filled = true':
co2 := 'color = COLOR(RGB, .8, .6, .1), filled = true':
cr  := 'color = COLOR(RGB, .9, .2, .1), filled = true':
cr2 := 'color = COLOR(RGB, .9, .4, .2), filled = true':
cy  := 'color = COLOR(RGB, .8, .8, .1), filled = true':

cg  := 'color = COLOR(RGB, .35, .6, .35), filled = true':
cg2 := 'color = COLOR(RGB, .5, .75, .5), filled = true':
cb  := 'color = COLOR(RGB, .5, .4, .8), filled = true':
cb2 := 'color = COLOR(RGB, .3, .2, .8), filled = true':

cgr := 'color = COLOR(RGB, .6, .65, .6), filled = true':
cgr2 := 'color = COLOR(RGB, .35, .38, .35), filled = true':

cw := 'clockwise':    ccw := 'counterclockwise':

>    #-------POINTS ------------------------
point( Orig, 0,0 ):
point( A, 1,3): point( B, 8, 3 ):
point( C, 5,9): point( E, -3, 8):   

>    #-------SEGMENTS ------------------------
dsegment( seg1 , Orig, C):  dsegment(  seg2 , B,E):

>   

>   

>    #-------TRIANGLES ------------------------
triangle( t0, [Orig, A,B] ):
triangle( t1, [A,B,C] ):  
triangle( t2, [A,B,E] ):
 

>    #-------OTHER FIGURES ------------------------
square(s1,[ point(v1,3,1), point(v2,7,1),
            point(v3,7,5), point(v4,3,5)]):
circle(c1, [B, 2]):
RegularPolygon(poly5,5,      point(v5,-3,3),2):
RegularStarPolygon(star,5/2, point(v6, 2,-2),1):

>   

>   

>    #-------Functions ------------------------
Trans3  :=  proc( obj )
    translation( Ta, obj, seg1 );
    translation( Tb, Ta, seg1);  
    draw( [obj(cr), Ta(co), Tb(cy)] );  
end proc:

>    TransN := proc(obj, n) local j,P,GG;    global Orig, seg;  
     for j from 1 to n do
        dsegment(  seg, Orig, point( GG,  j,  j) ):
      translation( P||j,  obj,  seg ):
   od:
     draw( [obj(cb), P||n(cg),
           seq(op([P||i(color=black)]),i=1..n-1) ] );
end proc:

>    RotN := proc(obj, n)
     local i,P,GG;    global Orig, seg;  
     for i from 1 to n do
         rotation( P||i, obj, i*Pi/6, ccw);
     od:
     draw( [obj(cb2), seq(op([P||i(color=black)]),i=1..n-1),                                                              P||n(cb)], axes = normal);
end proc:

>    Refl2 := proc(obj)
      local rx, ry, rxy, p_diag,n_diag, x1, x2, y1, y2;
      line(  p_diag, [point(x1, -10,-10), point( x2, 10, 10)]):
      line(  n_diag, [point(y1,  10,-10), point( y2,  -10, 10)]):
      reflection( rx, obj, p_diag);
      reflection( ry, obj, n_diag);
      reflection( rxy, rx, n_diag);
      draw( [obj(cg), rx(cg2), ry(cgr), rxy(cb),
             p_diag(cgr), n_diag(cgr2)], axes = none);
end proc:

>    ReflPt := proc( obj )
    local Q1,Q2,Q3,R1,R2,R3;
    point( Q1,  5, 0);     reflection( R1, obj, Q1);
    point( Q2, 15, 10); reflection( R2, obj, Q2);
    point( Q3, -1, 6); reflection( R3, obj, Q3);
    draw( { obj(cr), R1(cy), R2(cb),  R3(cg),  Q1, Q2, Q3 });
end proc:

>   

  1. Translação


Umas das transformações simples é a translação. Uma translação significa mover o objeto para uma nova posição, movendo horizontalmente (esquerda ou direita) alguma distância, e verticalmente (acima ou abaixo) alguma distância. Esse é um exemplo de uma transformação rígida que preserva o tamanho do objeto.

Aqui está um triângulo laranja avermelado com um vértice na origem. Se nós o mudássemos de posiçaõ uma vez, nós obteríamos um triângulo laranja claro, e novamente um triângulo amarelo.

>    Trans3(t1);

[Maple Plot]

Isso mostra alguns passos intermediários em uma translação, como o triângulo azul se move e se torna um triângulo verde.

>    TransN(t1,4);

[Maple Plot]



Nós podemos ver o que acontece quando nós aplicamos a mesma translação para diferentes formas geométricas.

>    Trans3(t2);
TransN(t2,4);

[Maple Plot]

[Maple Plot]

>    Trans3(s1);
TransN(s1,4);

[Maple Plot]

[Maple Plot]

>    Trans3(c1);
TransN(c1,4);

[Maple Plot]

[Maple Plot]

>    Trans3(poly5);
TransN(poly5,4);

[Maple Plot]

[Maple Plot]

>    Trans3(star);
TransN(star,4);

[Maple Plot]

[Maple Plot]


 

  2. Rotação


Outra transformação rígida é uma rotação. Aqui está um exemplo de um quadrado girado no sentido anti-horário. Observe como a orientação do quadrado muda durante a rotação. No final, esta quase de cabeça para baixo.

>    RotN( s1,8) ;

[Maple Plot]


Aqui estão diferentes formas com rotações aplicadas.

>    RotN( t1,8) ;

[Maple Plot]

>    RotN( c1,8) ;

[Maple Plot]

>    RotN( t2,8) ;

[Maple Plot]

>    RotN( poly5,7) ;

[Maple Plot]

>    RotN( star,9) ;

[Maple Plot]


 

  3. Reflexão Através de uma Linha


Nós olharemos agora reflexões através de uma linha.


        
Reflection Através dos Eixos  X & Y

Primeiro nós definimos duas linhas que representamos eixos x e y.

>    line(  x_axis, [point(x1, -10,0),  point( x2, 10, 0)]):
line(  y_axis, [point(y1,  0,-10), point( y2,  0, 10)]):

Depois, nós refletimos um objeto, nesse caso um triângulo, através do eixo x, do eixo y, e ambos, então nós desenhamos o triângulo e três reflexões.

>    obj := t2:
reflection( rx, obj ,x_axis):
reflection( ry, obj, y_axis):
reflection( rxy, rx, y_axis):
draw( { obj(cg), rx(cg2), ry(cy), rxy(cb) , x_axis(cgr), y_axis(cgr)}, axes = none);

[Maple Plot]

>    obj := poly5:
reflection( rx, obj ,x_axis):
reflection( ry, obj, y_axis):
reflection( rxy, rx, y_axis):
draw( { obj(cg), rx(cg2), ry(cy), rxy(cb) , x_axis(cgr), y_axis(cgr)}, axes = none);

[Maple Plot]


        Reflexão Através de Linhas Diagonais


Nós podemos fazer refletir um objeto através de qualquer linha. Aqui estão quatro reflexões. Uma através de cada linha, e depois um reflexão dupla sobre uma linha depois a outra.

>    Refl2(t2);

[Maple Plot]


Observe que a reflexão depende da distância do obejto em relação aos eixos de rotação. Se está em um eixo, a reflexão não será tão dramática.

>    Refl2(star);

[Maple Plot]

>    Refl2(s1);

[Maple Plot]

>    Refl2(c1);

[Maple Plot]

>    Refl2(t1);

[Maple Plot]


 

  4. Reflexão Através de um Ponto


É também possível refletir um objeto através de um ponto. A maneira pela qual isto é feito é desenhar uma linha de cada vértice da forma, digamos um triângulo, através do ponto de reflexão. Depois se você medir a mesma distância no lado oposto da linha para cada uma das três linhas, irá definir os três novos pontos. Esses pontos definem um triângulo onde a reflexão acontece através do ponto.

Aqui está um triângulo refletido através de três pontos diferentes. O triângulo vermelho é o original. Você pode ver os pontos e as reflexões do triângulo.

>    ReflPt(t1);

[Maple Plot]

>    ReflPt( s1);

[Maple Plot]

>    ReflPt( poly5);

[Maple Plot]

>    ReflPt( star);

[Maple Plot]

>   


 

  5. Estiramento e Contração


Outra transformação é reduzir ou ampliar um objeto. Nós o tornamos maior ou menor -mantendo a mesma forma mas modificando todas as dimensões juntamente com o perímetro e área. Esse tipo de transformação não é uma transformação rígida, mas ela preserva ângulo e forma. A original é em cinza, a verde escura é a versão diminuída, e a verde clara é a versão expandida do objeto.

>    obj := t2:
stretch( T6, obj, .4, Orig):
stretch( T7,  obj, 2, Orig):
draw( [obj(cgr), T6(cg), T7(cg2) ] );

[Maple Plot]

>    obj := s1:
stretch( T6, obj, .4, Orig):
stretch( T7,  obj, 2, Orig):
draw( [obj(cgr), T6(cg), T7(cg2) ] );

[Maple Plot]

>    obj := t1:
stretch( T6, obj, .4, Orig):
stretch( T7,  obj, 2, Orig):
draw( [obj(cgr), T6(cg), T7(cg2) ] );

[Maple Plot]

Aqui está uma sequência de transformações que aumentam a forma em 5 vezes..

>    obj := t2:  n := 5:
for j from 1 to n do stretch( P||j,  obj,  j, A): od:
draw({obj(cr2), seq(op([P||j(color=black)]),j=1..n) }, axes = normal);

[Maple Plot]

>    obj := star:  n := 5:
for j from 1 to n do stretch( P||j,  obj,  j, A): od:
draw({obj(cr2), seq(op([P||j(color=black)]),j=1..n) }, axes = normal);

[Maple Plot]

Here is a sequence of transformations which shrink a shape.

>    obj := c1:  
n := 6:   point( G, 1, 7):
for j from 1 to n do stretch( P||j,  obj,  1/j,  G): od:
draw({P||n(cr), obj(co), seq(op([P||j(color=black)]),j=1..(n-1))}, axes = normal);
 

[Maple Plot]

>    obj := poly5:  
n := 6:   point( G, 1, 7):
for j from 1 to n do stretch( P||j,  obj,  1/j,  G): od:
draw({P||n(cr), obj(co), seq(op([P||j(color=black)]),j=1..(n-1))}, axes = normal);

[Maple Plot]

>    obj := t2:  
n := 4:   point( G, 1, 7):
for j from 1 to n do stretch( P||j,  obj,  1/j,  G): od:
draw({P||n(cr), obj(co), seq(op([P||j(color=black)]),j=1..(n-1))}, axes = normal);

[Maple Plot]


 

  6. Reflexão Gradual


Uma reflexão gradual é uma combinação de duas transformações - uma reflexão e uma translação. O efeito rede de uma série de reflexões graduais é para ter uma série de imagens que transitam em cada lado de uma linha. A linha vem como um resultado de translações repetidas.


Para criar uma reflexão, o Maple precisa de um objeto, uma linha para refletir através, e um segmento de linha que esteja sobre a mesma linha para se acostumar a definir a translação.

>    dsegment(  seg , B,E);line( lin, [ B,E ]):

seg

Uma vez que nós tenhamos a linha e o segmento (o qual deve ser colinear), nós podemos aplicar a reflexão gradual em um objeto - nesse caso o triângulo t2. Nós iremos aplicá-lo três vezes, e depois desenhamos os resultados.

>    obj := t2:
GlideReflection( ra, obj, lin, seg):
GlideReflection( rb, ra,  lin, seg):
GlideReflection( rc, rb,  lin, seg):
draw( { obj(cb), ra(cr), rb(cb2), rc(cr2), lin(cgr)} );

[Maple Plot]

Como você pode ver o triângulo faz duas coisas em cada passo - ele se move (translação),  e ele se reflete. Isso cria a aparência "footprint"

>    obj := t1:
GlideReflection( ra, obj, lin, seg):
GlideReflection( rb, ra,  lin, seg):
GlideReflection( rc, rb,  lin, seg):
draw( { obj(cb), ra(cr), rb(cb2), rc(cr2), lin(cgr)} );

[Maple Plot]

>    obj := s1:
GlideReflection( ra, obj, lin, seg):
GlideReflection( rb, ra,  lin, seg):
GlideReflection( rc, rb,  lin, seg):
draw( { obj(cb), ra(cr), rb(cb2), rc(cr2), lin(cgr)} );

[Maple Plot]

>   

>